<?php
class App_Curl
{
  var $headers;
  var $user_agent;
  var $compression;
  var $cookie_file;
  var $proxy;
  function __construct($sessionID='',$cookies=TRUE, $cookie_file='/tmp/yesup_account_cookies.txt',$compression='gzip',$proxy='') {

    //$this->headers[] = 'Accept: image/gif, image/x-bitmap, image/jpeg, image/pjpeg';
    //$this->headers[] = 'Connection: Keep-Alive';
    $this->headers[] = 'Content-type: application/x-www-form-urlencoded;charset=UTF-8';
    //$this->headers[] = "Cookie: flyerland_splash=b2tbOA4NMStkjSl2al8gVqrQq; flyerland_region=1081; PHPSESSID=".$sessionID."; s_cc=true; s_sq=torontoflyerland%3D%2526pid%253DBest%252520Buy%252520Flyer%252520Toronto%252520-%252520bestbuy.ca/home.asp%25253FCMP%25253DBAC-1017_Flyerland_Test%252520-%252520Best%252520Buy%252520Online%252520Flyer%252520-%252520Toronto%25252C%252520Ontario%25252C%252520Canada%252520-%252520flyerland.ca%2526pidt%253D1%2526oid%253Dhttp%25253A//toronto.flyerland.ca/view_flyer.php%25253Fflyer_id%25253D3143%252526mode%25253Dthumbnails%2526ot%253DA\n";
    $this->user_agent = 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0)';
    $this->compression=$compression;
    $this->proxy=$proxy;
    $this->cookies=$cookies;
    if ($this->cookies == TRUE) $this->cookie($cookie_file);
  }
  function cookie($cookie_file) {
    if (file_exists($cookie_file)) {
      $this->cookie_file=$cookie_file;
    } else {
      fopen($cookie_file,'w') or $this->error('The cookie file could not be opened. Make sure this directory has the correct permissions');
      $this->cookie_file=$cookie_file;
      fclose($this->cookie_file);
    }
  }
  function get($url) {
    $process = curl_init($url);
    curl_setopt($process, CURLOPT_HTTPHEADER, $this->headers);
    curl_setopt($process, CURLOPT_HEADER, 0);
    curl_setopt($process, CURLOPT_USERAGENT, $this->user_agent);
    if ($this->cookies == TRUE) curl_setopt($process, CURLOPT_COOKIEFILE, $this->cookie_file);
    if ($this->cookies == TRUE) curl_setopt($process, CURLOPT_COOKIEJAR, $this->cookie_file);
    curl_setopt($process,CURLOPT_ENCODING , $this->compression);
    curl_setopt($process, CURLOPT_TIMEOUT, 30);
    if ($this->proxy) curl_setopt($url, CURLOPT_PROXY, 'proxy_ip:proxy_port');
    curl_setopt($process, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($process, CURLOPT_FOLLOWLOCATION, 1);
    $return = curl_exec($process);
    curl_close($process);
    return $return;
  }
  function post($url,$data) {
    $process = curl_init($url);
    //curl_setopt($process, CURLOPT_HTTPHEADER, $this->headers);
    //curl_setopt($process, CURLOPT_HEADER, 1);
    
    curl_setopt($process, CURLOPT_USERAGENT, $this->user_agent);
    if ($this->cookies == TRUE) curl_setopt($process, CURLOPT_COOKIEFILE, $this->cookie_file);
    if ($this->cookies == TRUE) curl_setopt($process, CURLOPT_COOKIEJAR, $this->cookie_file);
    curl_setopt($process, CURLOPT_ENCODING , $this->compression);
    curl_setopt($process, CURLOPT_TIMEOUT, 30);
    
    if ($this->proxy) curl_setopt($process, CURLOPT_PROXY, $this->proxy);
    curl_setopt($process, CURLOPT_POST, 1);
    curl_setopt($process, CURLOPT_POSTFIELDS, $data);
    curl_setopt($process, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($process, CURLOPT_FOLLOWLOCATION, 1);
      
    
    $return = curl_exec($process);
    curl_close($process);
    
    
    
    return $return;
  }
  
  function error($error) {
    echo "<center><div style='width:500px;border: 3px solid #FFEEFF; padding: 3px; background-color: #FFDDFF;font-family: verdana; font-size: 10px'><b>cURL Error</b><br>$error</div></center>";
    die;
  }
} 